Systems and methods for providing complementary content on linked machines

ABSTRACT

A system and method of displaying complementary content on one or more linked machines are disclosed. In some embodiments, the system and method may include a non-transitory, computer-readable medium storing computer-executable instructions and one or more processors in communication with the non-transitory, computer readable medium. When the computer-executable instructions are executed, the one or more processors may be configured to receive a linking instruction to link a display of second content of a website on a second machine to a selection of a portion of first content of the web site by a first machine, cause a display of the first content on the first machine, receive the selection of the portion of the first content displayed on the first machine, and based on the portion of the first content being selected, cause the display of the second content on the second machine based on the linking instruction.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. application Ser. No.14/471,953, entitled “Systems and Methods for Providing ComplementaryContent on Linked Machines,” and filed Aug. 28, 2014. The entirety ofthe aforementioned application is expressly incorporated by referenceherein.

TECHNICAL FIELD

The present application relates generally to the technical field of datalinking, and, in various embodiments, to systems and methods ofproviding complementary content on one or more secondary machines thathave been linked to a primary machine.

BACKGROUND

A mobile device may be equipped with an Internet browser for viewing oneor more web sites. While using the web browser on the mobile device, auser may visit one or more web pages belonging to an electronicmarketplace. During the user's visit to the electronic marketplace, theuser may request one or more web pages belonging to products and/orservices offered by the electronic marketplace to be displayed on themobile device's web browser. However, the display on a mobile device islimited in resolution and screen size when compared with other devices,such as a tablet computer, laptop computer, or desktop computer. Thus,it may be difficult for the user to view the web pages of the variousproducts and/or services on the mobile device's display. Furthermore,should the user desire to do comparison shopping (e.g., view web pagesfor competing products and/or services in determining which productand/or service to purchase), the mobile device's display makes itdifficult for the user to effectively view multiple web pages fordifferent products and/or services.

BRIEF DESCRIPTION OF THE DRAWINGS

Some embodiments of the present disclosure are illustrated by way ofexample and not limitation in the figures of the accompanying drawings,in which like reference numbers indicate similar elements, and in which:

FIG. 1 illustrates a network architecture in accordance with an exampleembodiment.

FIG. 2 illustrates applications, in accordance with an exampleembodiment, executable by one or more application servers.

FIG. 3 illustrates a client machine in accordance with an exampleembodiment.

FIG. 4 is a block diagram illustrating components of a machine,according to some example embodiments, able to read instructions from amachine-readable medium and perform any one or more of the methodologiesdiscussed herein, according to aspects of the disclosure.

FIG. 5 is a block diagram illustrating components of an applicationserver, according to an example embodiment, having various real-timecommunication components.

FIG. 6 illustrates another network architecture, in accordance withanother example embodiment, where a primary machine is in communicationwith a secondary machine for displaying complementary content.

FIG. 7 illustrates yet another network architecture, in accordance witha further example embodiment, where the primary machine is incommunication with the secondary machine for displaying complementarycontent.

FIG. 8 illustrates a primary machine, in accordance with an exampleembodiment, displaying a webpage for an electronic marketplace.

FIG. 9 illustrates a secondary machine, in accordance with an exampleembodiment, displaying a prompt requesting a linking instruction.

FIG. 10 illustrates the primary machine of FIG. 8 displaying a webpageof primary content in accordance with an example embodiment.

FIGS. 11A-11C illustrate an arrangement, in accordance with an exampleembodiment, where selection of the primary content displayed on theprimary machine has caused the display of secondary content on thesecondary machine.

FIGS. 12A-12B illustrate a method, in accordance with an exampleembodiment, for linking a primary machine and a secondary machine.

DETAILED DESCRIPTION

The description that follows includes illustrative systems, methods,techniques, instruction sequences, and computing machine programproducts that embody illustrative embodiments. In the followingdescription, for purposes of explanation, numerous specific details areset forth in order to provide an understanding of various embodiments ofthe inventive subject matter. It will be evident, however, to thoseskilled in the art that embodiments of the inventive subject matter maybe practiced without these specific details. In general, well-knowninstruction instances, protocols, structures, and techniques have notbeen shown in detail.

The present disclosure provides systems and methods for linking aprimary client machine with a secondary client machine, and displayingcontent on both the primary client machine and the secondary clientmachine. The primary client machine may be configured to display primarycontent and the secondary client machine may be configured to displaysecondary content in response to a selection of primary content, or aportion thereof, displayed by the primary client machine. For example,the primary client machine may display a list of items matching a givensearch term or search criteria, and for each selection of an item fromthe displayed matching items, the secondary client machine may display acomparison table of the various features of the selected items. In thisway, a user having client machines with limited display areas canmaximize the amount of information presented to him or her when decidingwhich items to buy when these items are determined to be matching itemsfor a given search term or search criteria.

In one embodiment, this disclosure provides a computer-implementedmethod that may include receiving, by one or more processors, a linkinginstruction to link a display of second content of a website on a secondmachine to a selection of a portion of first content of the website by afirst machine, the second content being complementary to the firstcontent and displaying, by a display in communication with the one ormore processors, the first content on the first machine. The method mayalso include receiving the selection of the portion of the first contentdisplayed on the first machine, and based on the portion of the firstcontent being selected, causing the display of the second content on thesecond machine based on the linking instruction.

In another embodiment of the disclosed method, the first machine isassociated with a user identifier having been provided during a firstsession of use of the website, the user identifier uniquely identifyinga user of the website, the second machine associated with the useridentifier having been provided during a second session of use of thewebsite, and the method may further include receiving a request for thelinking instruction based on the second session overlapping in time withthe first session.

In a further embodiment of the disclosed method, the method may includecausing a display of a linking identifier that identifies the firstmachine, wherein the linking instruction is received in response to aconfirmation that the linking identifier is correctly displayed.

In an additional embodiment of the disclosed method, the method mayinclude causing a change in the displaying of the first contentdisplayed by the first machine based on an input received by the secondmachine.

In yet another embodiment of the disclosed method, the method mayinclude determining whether the first machine and the second machine arein communication via a local area network, and based on thedetermination, causing the first machine to send the second content tothe second machine in response to a request for the second content fromthe first machine.

In yet a further embodiment of the disclosed method, the method mayinclude determining whether the first machine and the second machine arein communication via a local area network and, based on thedetermination, receiving a request for a content identifier for thesecond content, sending the content identifier to the second machine fordisplaying the second content.

In another embodiment of the disclosed method, the method may furtherinclude sending an update notification that the first machine hasreceived a selection of the portion of the first content of the website,wherein the update notification causes the second content to be sent tothe second machine.

In a further embodiment of the disclosed method, the first machinecommunicates with the website using a first communication channel, thesecond machine communicates with the website using a secondcommunication channel, and the first communication channel and thesecond communication channel are different communication channels.

In yet another embodiment of the disclosed method, the first contentincludes particular information about a product or service offered bythe website and the second content includes a user-configurable portionof the first content.

This disclosure also provides for a system that may include anon-transitory, computer-readable medium storing computer-executableinstructions, and one or more processors in communication with thenon-transitory, computer readable medium that, when thecomputer-executable instructions are executed, are configured to receivea linking instruction to link a display of second content of a websiteon a second machine to a selection of a portion of first content of thewebsite by a first machine, the second content being complementary tothe first content, and cause a display of the first content on the firstmachine. The one or more processors may also be configured to receivethe selection of the portion of the first content displayed on the firstmachine, and based on the portion of the first content being selected,cause the display of the second content on the second machine based onthe linking instruction.

In another embodiment of the system, the first machine is associatedwith a user identifier having been provided during a first session ofuse of the website, the user identifier uniquely identifying a user ofthe website, the second machine associated with the user identifierhaving been provided during a second session of use of the website, andthe one or more processors are further configured to receive a requestfor the linking instruction based on the second session overlapping intime with the first session.

In a further embodiment of the disclosed system, the one or moreprocessors are further configured to cause a display of a linkingidentifier that identifies the first machine, wherein the linkinginstruction is received in response to a confirmation that the linkingidentifier is correctly displayed.

In an additional embodiment of the disclosed system, the one or moreprocessors may be configured to cause a change in the first contentdisplayed by the first machine based on an input received by the secondmachine.

In yet another embodiment of the disclosed system, the one or moreprocessors are further configured to determine whether the first machineand the second machine are in communication via a local area network,and based on the determination, cause the first machine to send thesecond content to the second machine in response to a request for thesecond content from the first machine.

In yet a further embodiment of the disclosed system, the one or moreprocessors are further configured to determine whether the first machineand the second machine are in communication via a local area network,and based on the determination, receive a request for a contentidentifier for the second content, send the content identifier to thesecond machine for displaying the second content.

In another embodiment of the system, the one or more processors arefurther configured to send an update notification that the first machinehas received a selection of the portion of the first content of thewebsite, wherein the update notification causes the second content to besent to the second machine.

In a further embodiment of the system, the first machine communicateswith the website using a first communication channel, the second machinecommunicates with the website using a second communication channel, andthe first communication channel and the second communication channel aredifferent communication channels.

In yet another embodiment of the system, the first content includesparticular information about a product or service offered by the websiteand the second content includes a user-configurable portion of the firstcontent.

This disclosure also provides for a non-transitory, computer-readablemedium storing computer executable instructions that, when executed byone or more processors, cause the one or more processors to perform amethod that may include receiving, by one or more processors, a linkinginstruction to link a display of second content of a website on a secondmachine to a selection of a portion of first content of the website by afirst machine, the second content being complementary to the firstcontent, and displaying, by a display in communication with the one ormore processors, the first content on the first machine. The method mayalso include receiving the selection of the portion of the first contentdisplayed on the first machine, and based on the portion of the firstcontent being selected, causing the display of the second content on thesecond machine based on the linking instruction.

In another embodiment of the non-transitory, computer-readable medium,the first machine is associated with a user identifier having beenprovided during a first session of use of the website, the useridentifier uniquely identifying a user of the website, the secondmachine associated with the user identifier having been provided duringa second session of use of the website, and the method further comprisesreceive a request for the linking instruction based on the secondsession overlapping in time with the first session.

In an additional embodiment of the non-transitory, computer-readablemedium, the method may further include causing a change in the firstcontent displayed by the first machine based on an input received by thesecond machine.

In a further embodiment of the non-transitory, computer-readable medium,the method further includes determining whether the first machine andthe second machine are in communication via a local area network, andbased on the determination, causing the first machine to send the secondcontent to the second machine in response to a request for the secondcontent from the first machine.

In yet another embodiment of the non-transitory, computer-readablemedium, the method may include determining whether the first machine andthe second machine are in communication via a local area network, andbased on the determination, receiving a request for a content identifierfor the second content, sending the content identifier to the secondmachine for displaying the second content.

The methods or embodiments disclosed herein may be implemented as acomputer system having one or more modules (e.g., hardware modules orsoftware modules). Such modules may be executed by one or moreprocessors of the computer system. The methods or embodiments disclosedherein may be embodied as instructions stored on a machine-readablemedium that, when executed by one or more processors, cause the one ormore processors to execute the instructions.

FIG. 1 illustrates a network architecture 100 in accordance with anexample embodiment. A networked system 102, in the example forms of anetwork-based marketplace or publication system, provides server-sidefunctionality, via a network 104 (e.g., the Internet or a Wide AreaNetwork (WAN)) to one or more client machines. FIG. 1 illustrates, forexample, a web client 106 (e.g., a browser, such as the InternetExplorer browser developed by Microsoft Corporation of Redmond,Washington State) and a programmatic client 108 executing on respectiveclient machines 110 and 112.

An API server 114 and a web server 116 are coupled to, and provideprogrammatic and web interfaces respectively to, one or more applicationservers 118. The application servers 118 host one or more applications,such as a marketplace application(s) 120, a payment application(s) 122,and one or more real-time communication application(s) 132. Theapplication servers 118 are, in turn, shown to be coupled to one or moredatabase servers 124 that facilitate access to one or more databases126.

The marketplace application(s) 120 may provide a number of marketplacefunctions and services to users who access the networked system 102. Thepayment application(s) 122 may likewise provide a number of paymentservices and functions to users. The payment application(s) 122 mayallow users to accumulate value (e.g., in a commercial currency, such asthe U.S. dollar, or a proprietary currency, such as “points”) inaccounts, and then later to redeem the accumulated value for products(e.g., goods or services) that are made available via the marketplaceapplication(s) 120.

The application server 118 may also include one or more real-timecommunication application(s) 132 to facilitate real-time, orsubstantially near real-time, communication between one or more of themachines shown in FIG. 1 , such as between client machine 110 and clientmachine 112. In one embodiment, the real-time communicationapplication(s) 132 may determine whether a user has initiated a firstsession of use with a server (e.g., API server 114 or web server 116) ona first machine and a second session of use with the server on a secondmachine. The real-time communication application(s) 132 may detectwhether the first session overlaps in time with the second session. Thereal-time communication application(s) 132 may then query the user as towhether the user desires to link communications between the firstmachine and the second machine. Alternatively, or in addition, a useraccount for the user may be configured to allow multiple logins (e.g.,from the same user and/or a different user), and the real-timecommunication application(s) 132 may be configured to wait until theuser has initiated the linking of the client machines 110-112.

The real-time communication application(s) 132 may then facilitatecommunications between the first machine and the second machine suchthat, when first content is displayed by a server (e.g., the web server116) and is selected by the user at the first machine, second content isthen displayed at the second machine. For example, the first content maybe a list of items (e.g., hats, perfumes, desktop computers, etc.)matching a given search query, and when an item is selected from thelist, the second content may be features for the selected item (e.g.,hat size, perfume price, desktop processor speed, etc.). In this way,the second content displayed by the second machine may help the usermore rapidly compare items and, if the user desires to purchase one ofthe items, decide which of those items to purchase.

In determining the second content to display, the real-timecommunication application(s) 132 may be previously configured with thesecond content to send to the first and/or second machine. As discussedbelow, in some embodiments, the real-time communication application(s)132 may send the second content to the first machine for passing alongto, and displaying on, the second machine. In other embodiments, thereal-time communication application(s) 132 may send the second contentto the second machine for display.

Furthermore, the real-time communication application(s) 132 may beconfigured with the features to display on the second machine. Forexample, if an item selected by the first machine is displayed as havingfifteen features, the real-time communication application(s) 132 may beconfigured to cause the display of a select subset of those fifteenfeatures (e.g., ten features, five features, etc.). Alternatively, auser of the first machine may configure which of the second content isto be displayed on the second machine. In this way, the second contentdisplayed on the second machine may be those features that the userbelieves are more relevant or more important to him or her. In analternative embodiment, selection of the item on the first machine maycause additional features not displayed by the first machine to bedisplayed on the second machine (e.g., more features are displayed onthe second machine than are displayed by the first machine).

While the marketplace application(s) 120, the payment application(s)122, and the real-time communication application(s) 132 are shown inFIG. 1 to form part of the networked system 102, it will be appreciatedthat, in alternative embodiments, the applications 120, 122, 132 may beseparate or distinct from the system 102. For example, the paymentapplication(s) 122 may form part of a payment service that is separateand distinct from the networked system 102.

Further, while the system 100 shown in FIG. 1 employs a client-serverarchitecture, the embodiments are, of course not limited to such anarchitecture, and could equally well find application in a distributed,or peer-to-peer, architecture system, for example. The marketplaceapplication(s) 120, the payment application(s) 120, the real-timecommunication application(s) 132 could also be implemented as standalonesoftware programs, which do not necessarily have networkingcapabilities.

The web client 106 may access the marketplace application(s) 120, thepayment application(s) 122, and the real-time communicationapplication(s) 132 via the web interface supported by the web server116. Similarly, the programmatic client 108 may access the variousservices and functions provided by the applications 120, 122, 132 viathe programmatic interface provided by the API server 114. Theprogrammatic client 108 may, for example, be a seller application (e.g.,the TurboLister application developed by eBay Inc., of San Jose,California) to enable sellers to author and manage listings on thenetworked system 102 in an off-line manner, and to perform batch-modecommunications between the programmatic client 108 and the networkedsystem 102.

FIG. 1 also illustrates a third party application 128, executing on athird party server 130, as having programmatic access to the networkedsystem 102 via the programmatic interface provided by the API server114. For example, the third party application 128 may, utilizinginformation retrieved from the networked system 102, support one or morefeatures or functions on a website hosted by the third party. The thirdparty website may, for example, provide one or more promotional,marketplace, payment, or advertising functions that are supported by therelevant applications of the networked system 102.

The networked system 102 may provide a number of publishing, listing,and price-setting mechanisms whereby a seller may list (or publishinformation concerning) goods or services for sale, a buyer can expressinterest in or indicate a desire to purchase such goods or services, anda price can be set for a transaction pertaining to the goods orservices. FIG. 2 illustrates applications, in accordance with an exampleembodiment, executable by one or more application server(s) 118. To thisend, the marketplace and payment applications 120 and 122 are shown toinclude at least one publication application 200 and one or more auctionapplications 202, which support auction-format listing and price settingmechanisms (e.g., English, Dutch, Vickrey, Chinese, Double, Reverseauctions etc.). The various auction applications 202 may also provide anumber of features in support of such auction-format listings, such as areserve price feature whereby a seller may specify a reserve price inconnection with a listing and a proxy-bidding feature whereby a biddermay invoke automated proxy bidding.

A number of fixed-price applications 204 support fixed-price listingformats (e.g., the traditional classified advertisement-type listing ora catalogue listing) and buyout-type listings. Specifically, buyout-typelistings (e.g., including the Buy-It-Now (BIN) technology developed byeBay Inc., of San Jose, California) may be offered in conjunction withauction-format listings, and allow a buyer to purchase goods orservices, which are also being offered for sale via an auction, for afixed-price that is typically higher than the starting price of theauction.

Store applications 206 allow a seller to group listings within a“virtual” store, which may be branded and otherwise personalized by andfor the seller. Such a virtual store may also offer promotions,incentives, and features that are specific and personalized to arelevant seller.

Reputation applications 208 allow users who transact, utilizing thenetworked system 102, to establish, build, and maintain reputations,which may be made available and published to potential trading partners.Consider that where, for example, the networked system 102 supportsperson-to-person trading, users may otherwise have no history or otherreference information whereby the trustworthiness and credibility ofpotential trading partners may be assessed. The reputation applications208 allow a user (e.g., through feedback provided by other transactionpartners) to establish a reputation within the networked system 102 overtime. Other potential trading partners may then reference such areputation for the purposes of assessing credibility andtrustworthiness.

Personalization applications 210 allow users of the networked system 102to personalize various aspects of their interactions with the networkedsystem 102. For example a user may, utilizing an appropriatepersonalization application 210, create a personalized reference page onwhich information regarding transactions to which the user is (or hasbeen) a party may be viewed. Further, a personalization application 210may enable a user to personalize listings and other aspects of theirinteractions with the networked system 102 and other parties.

The networked system 102 may support a number of marketplaces that arecustomized, for example, for specific geographic regions. A version ofthe networked system 102 may be customized for the United Kingdom,whereas another version of the networked system 102 may be customizedfor the United States. Each of these versions may operate as anindependent marketplace or may be customized (or internationalized)presentations of a common underlying marketplace. The networked system102 may, accordingly, include a number of internationalizationapplications 212 that customize information (and/or the presentation ofinformation) by the networked system 102 according to predeterminedcriteria (e.g., geographic, demographic or marketplace criteria). Forexample, the internationalization applications 212 may be used tosupport the customization of information for a number of regionalwebsites that are operated by the networked system 102 and that areaccessible via respective web servers 116.

Navigation of the networked system 102 may be facilitated by one or morenavigation applications 214. For example, a search application (as anexample of a navigation application 214) may enable key word searches oflistings published via the networked system 102. A browse applicationmay allow users to browse various category, catalogue, or inventory datastructures according to which listings may be classified within thenetworked system 102. Various other navigation applications 214 may beprovided to supplement the search and browsing applications.

In order to make the listings available via the networked system 102 asvisually informing and attractive as possible, the applications 120 and122 may include one or more imaging applications 216, which users mayutilize to upload images for inclusion within listings. An imagingapplication 216 also operates to incorporate images within viewedlistings. The imaging applications 216 may also support one or morepromotional features, such as image galleries that are presented topotential buyers. For example, sellers may pay an additional fee to havean image included within a gallery of images for promoted items.

Listing creation applications 218 allow sellers to conveniently authorlistings pertaining to goods or services that they wish to transact viathe networked system 102, and listing management applications 220 allowsellers to manage such listings. Specifically, where a particular sellerhas authored and/or published a large number of listings, the managementof such listings may present a challenge. The listing managementapplications 220 provide a number of features (e.g., auto-relisting,inventory level monitors, etc.) to assist the seller in managing suchlistings. One or more post-listing management applications 222 alsoassist sellers with a number of activities that typically occurpost-listing. For example, upon completion of an auction facilitated byone or more auction applications 202, a seller may wish to leavefeedback regarding a particular buyer. To this end, a post-listingmanagement application 222 may provide an interface to one or morereputation applications 208, so as to allow the seller conveniently toprovide feedback regarding multiple buyers to the reputationapplications 208.

Dispute resolution applications 224 provide mechanisms whereby disputesarising between transacting parties may be resolved. For example, thedispute resolution applications 224 may provide guided procedureswhereby the parties are guided through a number of steps in an attemptto settle a dispute. In the event that the dispute cannot be settled viathe guided procedures, the dispute may be escalated to a third partymediator or arbitrator.

A number of fraud prevention applications 226 implement fraud detectionand prevention mechanisms to reduce the occurrence of fraud within thenetworked system 102.

Messaging applications 228 are responsible for the generation anddelivery of messages to users of the networked system 102, such as, forexample, messages advising users regarding the status of listings at thenetworked system 102 (e.g., providing “outbid” notices to bidders duringan auction process or to providing promotional and merchandisinginformation to users). Respective messaging applications 228 may utilizeany one of a number of message delivery networks and platforms todeliver messages to users. For example, messaging applications 228 maydeliver electronic mail (e-mail), instant message (IM), Short MessageService (SMS), text, facsimile, or voice (e.g., Voice over IP (VoIP))messages via the wired (e.g., the Internet), Plain Old Telephone Service(POTS), or wireless (e.g., mobile, cellular, WiFi, WiMAX) networks.

Merchandising applications 230 support various merchandising functionsthat are made available to sellers to enable sellers to increase salesvia the networked system 102. The merchandising applications 230 alsooperate the various merchandising features that may be invoked bysellers, and may monitor and track the success of merchandisingstrategies employed by sellers.

The networked system 102 itself, or one or more parties that transactvia the networked system 102, may operate loyalty programs that aresupported by one or more loyalty/promotions applications 232. Forexample, a buyer may earn loyalty or promotion points for eachtransaction established and/or concluded with a particular seller, andbe offered a reward for which accumulated loyalty points can beredeemed.

Furthermore, and referring back to FIG. 1 , the real-time communicationapplication(s) 132 may leverage one or more of the applications 200-232in determining the secondary content for display on one or moresecondary machines. In other words, the real-time communicationapplication(s) 132 may invoke or use data gathered by the applications200-232 in determining the secondary content (e.g., features for aselected item) displayed by one or more secondary machines linked to theprimary machines. For example, the real-time communicationapplication(s) 132 may obtain the features and/or feature values forselected items via such as application as the auction application(s)202, the fixed-price application(s) 204, the store application(s) 206,or combinations thereof.

As the real-time communication application(s) 132 may be integrated(e.g., directly or indirectly) with the application server 118, thereal-time communication application(s) 132 may leverage the dataobtained from the applications 200-232 to display secondary content onone or more secondary machines. This integration may further extend tothe one or more database server(s) 124 and/or database(s) 126 incommunication with the application server(s) 118. As discussed below,the real-time communication application(s) 132 may access storedinformation to retrieve the secondary content, and send such retrievedsecondary content to the one or more secondary machines (directly orindirectly) for display by the one or more secondary machines.

FIG. 3 illustrates a client machine 110 in accordance with an exampleembodiment. In one embodiment, the client machine 110 is a mobile device300. The mobile device 300 includes one or more processors 302. The oneor more processors 302 may be any of a variety of different types ofcommercially available processors suitable for mobile devices (e.g., anARM architecture microprocessor, a Microprocessor without InterlockedPipeline Stages (MIPS) architecture processor, or another type ofprocessor). A memory 304, such as a random access memory (RAM), a Flashmemory, or other type of memory, is typically accessible to the one ormore processors 302. The memory 304 may be adapted to store an operatingsystem (OS) 306, as well as application programs 308, such as a mobilelocation enabled application that can provide location-based services toa user. The one or more processors 302 is coupled, either directly orvia appropriate intermediary hardware, to a display 310 and to one ormore input/output (I/O) devices 312, such as a keypad, a touch panelsensor, a microphone, and the like. Similarly, in some embodiments, oneor more processors 302 is coupled to a transceiver 314 that interfaceswith an antenna 316. The transceiver 314 may be configured to bothtransmit and receive cellular network signals, wireless data signals, orother types of signals via the antenna 316, depending on the nature ofthe mobile device 300. Further, in some configurations, a GPS receiver318 may also make use of the antenna 316 to receive GPS signals.

FIG. 4 is a block diagram illustrating components of a machine,according to some example embodiments, able to read instructions from amachine-readable medium and perform any one or more of the methodologiesdiscussed herein, according to aspects of the disclosure. In particular,FIG. 4 illustrates an example computer system 400 within whichinstructions 424 for causing the machine to perform any one or more ofthe methodologies discussed herein may be executed. In alternativeembodiments, the machine operates as a standalone device or may beconnected (e.g., networked) to other machines. In a networkeddeployment, the machine may operate in the capacity of a server or aclient machine in a server-client network environment, or as a peermachine in a peer-to-peer (or distributed) network environment. Themachine may be a personal computer (PC), a tablet PC, a set-top box(STB), a Personal Digital Assistant (PDA), a cellular telephone, a webappliance, a network router, switch or bridge, or any machine capable ofexecuting instructions (sequential or otherwise) that specify actions tobe taken by that machine. Further, while only a single machine isillustrated, the term “machine” shall also be taken to include anycollection of machines that individually or jointly execute a set (ormultiple sets) of instructions to perform any one or more of themethodologies discussed herein.

The example computer system 400 includes a processor 402 (e.g., acentral processing unit (CPU), a graphics processing unit (GPU) orboth), a main memory 404 and a static memory 406, which communicate witheach other via a bus 408. The computer system 400 may further include avideo display unit 410 (e.g., a liquid crystal display (LCD) or acathode ray tube (CRT)). The computer system 400 also includes analphanumeric input device 412 (e.g., a keyboard), a user interface (UI)navigation (or cursor control) device 414 (e.g., a mouse), a disk driveunit 416, a signal generation device 418 (e.g., a speaker) and a networkinterface device 420.

The disk drive unit 416 includes a non-transitory machine-readablemedium 422 on which is stored one or more sets of data structures andinstructions 424 (e.g., software) embodying or utilized by any one ormore of the methodologies or functions described herein. Theinstructions 424 may also reside, completely or at least partially,within the main memory 404 and/or within the processor 402 duringexecution thereof by the computer system 400, the main memory 404 andthe processor 402 also constituting non-transitory, machine-readablemedia. The instructions 424 may also reside, completely or at leastpartially, within the static memory 406.

While the machine-readable medium 422 is shown in an example embodimentto be a single medium, the term “machine-readable medium” may include asingle medium or multiple media (e.g., a centralized or distributeddatabase, and/or associated caches and servers) that store the one ormore instructions 424 or data structures. The term “machine-readablemedium” shall also be taken to include any tangible medium that iscapable of storing, encoding, or carrying instructions for execution bythe machine and that cause the machine to perform any one or more of themethodologies of the present embodiments, or that is capable of storing,encoding or carrying data structures utilized by or associated with suchinstructions. The term “machine-readable medium” shall accordingly betaken to include, but not be limited to, solid-state memories, andoptical and magnetic media. Specific examples of machine-readable mediainclude non-volatile memory, including by way of example semiconductormemory devices (e.g., Erasable Programmable Read-Only Memory (EPROM),Electrically Erasable Programmable Read-Only Memory (EEPROM), and flashmemory devices); magnetic disks such as internal hard disks andremovable disks; magneto-optical disks; and compact disc-read-onlymemory (CD-ROM) and digital versatile disc (or digital video disc)read-only memory (DVD-ROM) disks.

The instructions 424 may further be transmitted or received over acommunications network 426 using a transmission medium. The instructions424 may be transmitted using the network interface device 420 and anyone of a number of well-known transfer protocols (e.g., HTTP). Examplesof communication networks include a LAN, a WAN, the Internet, mobiletelephone networks, POTS networks, and wireless data networks (e.g.,WiFi and WiMax networks). The term “transmission medium” shall be takento include any intangible medium capable of storing, encoding, orcarrying instructions for execution by the machine, and includes digitalor analog communications signals or other intangible media to facilitatecommunication of such software.

FIG. 5 is a block diagram illustrating components of an applicationserver 118, according to an example embodiment, having various real-timecommunication components. As shown in FIG. 5 , the application server(s)118 may include one or more processors 502, a non-transitory,computer-readable memory or collection of such memories 504, and anetwork interface 506. The network interface 506 may facilitatecommunications between the application server(s) 118 and any of theother machines shown in FIG. 1 .

The memory 504 may include one or more applications 508 and data 510 tosupport applications 508. The applications 508 may include the one ormore marketplace application(s) 120, the one or more paymentapplication(s) 122, and the one or more real-time communicationapplication(s) 132. The data 510 may be accessed or used by the one ormore applications 508, such as the one or more real-time communicationapplication(s) 132. Although the data 510 is shown as being housedwithin the same block as the real-time communication application(s) 132,the data 510 may be housed or stored in other locations, such as thedatabase(s) 126, and accessed via an intermediary machine, such as thedatabase server(s) 124.

The real-time communication application (s) 132 may include one or moreapplications that select facilitate real-time, or near real-time,communications between a primary machine and one or more secondarymachines. In various embodiments, the real-time communicationapplication(s) 132 may include one or more scripts, protocols, ordefinitions as described in “WebRTC 1.0: Real-time Communication BetweenBrowsers,” or in “Customizable, Ubiquitous Real-Time Communication Overthe Web,” both of which are incorporated by reference herein, or incombinations thereof. For example, the real-time communicationsapplication(s) 132 may implement an Interactive Connectivity (“ICE”)framework, one or more Session Traversal Utilities for NAT (“STUN”)servers, one or more Traversal Using Relays around NAT (“TURN”) servers,or various combinations thereof. This assortment and/or combination ofreal-time communication application(s) 132 may make it possible for aprimary machine to communicate with one or more secondary machines. Inparticular, these protocols and/or frameworks may inform a primarymachine of the Internet Protocol (“IP”) addresses, ports, sockets, andother such network information, assigned to or used by one or moresecondary machines such that the primary machine may communicatedirectly or indirectly with the one or more secondary machines. Anexemplary arrangement and implementation of such protocols and/orframeworks is described in “Introduction to WebRTC architecture,” whichis incorporated by reference herein.

The real-time communication application(s) 132 may also monitor whethera user has initiated different sessions with one or more servers of FIG.1 (e.g., the API server 114, the web server 116, and/or the applicationserver(s) 118) using different machines. Accordingly, the real-timecommunication application(s) 132 may store and/or retrieve informationfrom various data stores, such as the real-time data store 512 and/or auser/machine data store 514. The user/machine data store 514 maymaintain an account of which machines have active sessions by a user,and which machines should be linked as primary and secondary machine(s).The real-time data store 512 may store messages received from theprimary machine informing the real-time communication application(s) 132when content should be sent to one or more secondary machines.

As one example, and as discussed below, when a user first accesses oneor more of the servers 114-118 with a machine (e.g., the user's primarymachine), the real-time communication application(s) 132 may create anentry in the user/machine data store 514 associating the user with theprimary machine. When the user then accesses one or more of the servers114-118 with a second machine (e.g., the secondary machine), thereal-time communication application(s) 132 may reference theuser/machine data store 514 to determine whether the user has alreadyinitiated a session with one or more of the servers 114-118 and, if so,whether the second machine now being used to access one or more of theservers 114-118 is different from the first machine. If the machines aredifferent, the real-time communication application(s) 132 may cause thedisplay of a prompt to the user as to whether the user desires to linkthe first machine with the second machine. Where the real-timecommunication application(s) 132 receives a linking instruction, thereal-time communication application(s) 132 may update the user/machinedata store 514 to reflect that the first machine and the second machineare linked, and which of the machines is the primary machine and whichmachine is the secondary machine.

In an additional or alternative implementation, a user other than theuser of the first machine may be using the second machine, and the userof the second machine and/or the user of the first machine may authorizethe linking of the first and second machines. For example, a ShortMessaging System (“SMS”) message may be sent to the first and/or seconduser, and a reply to the SMS message may authorize the linking of thefirst and second machines.

As the user then browses the electronic marketplace hosted by one ormore of the servers 114-118 on the primary machine, content may bedisplayed on the second machine in response to selections of content onthe primary machine.

The content displayed on the one or more secondary machines may becomplementary to, or a subset of, the content displayed by the primarymachine. In other words, the content displayed by the one or moresecondary machines may be related to the content displayed by theprimary machine. In one embodiment, the content for display on the oneor more secondary machines may be controlled by a script, such as aJavaScript script, that is invoked when a user selects content, or aportion thereof, displayed on the primary machine.

Alternatively, or in addition, to the foregoing embodiment, a user mayinitiate the linking of a primary machine with one or more secondarymachines. For example, after a user has accessed the one or more servers114-118 with a primary machine and a secondary machine, the user mayselect an element (e.g., a hyperlink) displayed by the primary machineand/or secondary machine that instructs the real-time communicationapplication(s) 132 to initiate a link between the primary machine andthe secondary machine. Thus, the user may have manual control over whenthe primary machine and one or more secondary machines should be linked.This manual control may be useful in instances where the user may havepreviously declined a prompt from the real-time communicationapplication(s) 132 to link the primary machine and the one or moresecondary machines, but desires to have such linking.

After a primary machine has been linked with one or more secondarymachines, communications between the linked machines may be direct orindirect. As discussed below with reference to FIG. 6 , a directcommunication may be where the primary machine and the one or moresecondary machines reside on the same Local Area Network (“LAN”), evenif the machines are on different subnets. As discussed below withreference to FIG. 7 , an indirect communication may be where the primarymachine and the one or more secondary machines reside on different LANs.

Furthermore, content transferred between the primary machine and the oneor more secondary machines may be in a peer-to-peer fashion or mayleverage the application server(s) 118 to act as an intermediary. In oneembodiment, the mode of operation between the primary machine and theone or more secondary machines may be based on testable factors, such asa network speed between the primary machine and the one or moresecondary machines. For example, a given mode of operation (e.g.,peer-to-peer or intermediary) may be selected based on a detectednetwork speed below (or above) a predetermined threshold for networkspeed. Variations or combinations of these operating modes are alsopossible.

In a peer-to-peer mode, when content is selected by the user on theprimary machine, the primary machine may send a request to one or moresecondary machines to display complementary content. In this example,the primary machine may request the complementary content from one ormore of the servers 114-118, and the one or more servers 114-118 maysend the complementary content to the primary machine, which may thencommunicate the complementary content to the one or more secondarymachines. Alternatively, the primary machine may send a request to theone or more secondary machines to display complementary content, and theone or more secondary machines may then send a request to the one ormore servers 114-118 for the complementary content. For example, theprimary machine may provide a Uniform Resource Locator (“URL”) for thecomplementary content to the one or more secondary machines, which maythen request the complementary content from the one or more servers114-118 located at the provided URL.

In an intermediary mode, the real-time communication application(s) 132may act as an intermediary between the linked machines (e.g., betweenthe primary machine and the one or more secondary machines). Forexample, when content displayed on the primary machine is selected bythe user, a message may be sent to the real-time data store 512informing the real-time communication application(s) 132 that theprimary machine is requesting that complementary content be sent to theone or more secondary machines. The real-time communicationapplication(s) 132 may then reference the user/machine data store 514 todetermine which one or more secondary machines are linked to therequesting primary machine, and the real-time communicationapplication(s) 132 may then send the requested complementary content tothe one or more secondary machines accordingly. When operating in anintermediary mode, the primary machine and the one or more secondarymachines may or may not be in communication via the same LAN or a subnetthereof. In one embodiment, the intermediary mode may be invoked orrequested when the primary machine, the one or more secondary machines,and/or the application server(s) 118 determines that network conditionsare such that peer-to-peer communication between the primary machine andthe one or more secondary machines may be unreliable (e.g.,transmissions take an inordinate amount of time to travel, there issignificant packet loss, there is an unacceptable amount of jitter inthe sent or received data, etc.).

FIG. 6 illustrates another network architecture 602, in accordance withanother example embodiment, where a primary machine 604 is incommunication with a secondary machine 606 for displaying complementarycontent. In one embodiment, the primary machine 604 may be a mobiledevice, such as a smartphone, and the secondary machine 606 may be aportable device, such as a laptop, netbook, tablet, or other suchportable device. As shown in FIG. 6 , the primary machine 604 and thesecondary machine 606 may each implement or instantiate a real-timecommunication client 612 and 614, respectively. In one embodiment,real-time communication clients 612, 614 may each be an Internetbrowser, such as Internet Explorer, Mozilla Firefox, Google Chrome,etc., that supports the WebRTC protocols and definitions.

The primary machine 604 and the secondary machine 606 may communicatewith each other via a LAN 608 and may communicate with the web server116 and/or the application server 118 via a Wide Area Network 610 (e.g.,the Internet). Where the primary machine 604 and the secondary machine606 are in communication via the LAN 608, the primary machine 604 mayrequest complementary content from one or more of the servers 116-118and, when the complementary content is received, send that complementarycontent to the secondary machine 606. In this way, the secondary machine606 may not need to expend resources in attempting to retrieve orrequest the complementary content from one or more of the servers116-118. In an alternative embodiment, the primary machine 604 may senda URL of the complementary content to the secondary machine 606, and thesecondary machine 606 may then request the complementary content fromthe one or more of the servers 116-118. Combinations of the foregoingare also possible.

FIG. 7 illustrates yet another network architecture 702, in accordancewith a further example embodiment, where the primary machine 604 is incommunication with the secondary machine 606 for displayingcomplementary content. While the primary machine 604 and the secondarymachine 606 may not be in communication via the LAN 608, the primarymachine 604 and the secondary machine 606 may nonetheless communicatewith each other (e.g., communicate in a peer-to-peer mode). Furtherstill, the communication channels employed by the primary machine 604and the secondary machine 606 may be different. For example, the primarymachine 604 may communicate using a first communication channel (e.g.,Ethernet, 802.11 a/b/g, CDMA, LTE, etc.) and the secondary machine 606may communicate using a second communication channel (e.g., Ethernet,802.11 a/b/g, CDMA, LTE, etc.). As each of the primary machine 604 andthe secondary machine 606 may establish a connection with theapplication server(s) 118, the application server(s) 118 may obtainnetwork information (e.g., public IP addresses, communication ports,etc.) from each machine 604, 606. The primary machine 604 may then usethe network information of the secondary machine 606 obtained by theapplication server(s) 118 to communicate with the secondary machine 606.

However, in some instances, the communication between the primarymachine 604 and the secondary machine 606 may be unreliable orundesirable (e.g., unacceptable packet losses, malformed packets,unacceptable packet delays, etc.). Accordingly, under these conditions,the primary machine 604 and the secondary 606 may communicate in anintermediary mode. As previously discussed, the primary machine 604 andthe secondary machine 606 may leverage the application server(s) 118 toact as an intermediary for the machines 604, 606. In this intermediarymode, when the primary machine 604 communicates a request thatcomplementary content should be displayed on the secondary machine 606,the primary machine 604 may send the request to the applicationserver(s) 118, which may then fulfill the request by sending therequested complementary content to the secondary machine 606 fordisplay. Accordingly, regardless of whether the primary machine 604 andthe secondary machine 606 are on the same network (e.g., communicatingusing the same LAN) or whether the primary machine 604 and the secondarymachine 606 communicate in a peer-to-peer mode or intermediary mode,complementary content requested by the primary machine 604 may bedisplayed on the secondary machine 606.

FIG. 8 illustrates a primary machine 802, in accordance with an exampleembodiment, displaying a webpage 806 for an electronic marketplace. Inone embodiment, the primary machine 802 may be a smartphone equippedwith a display 804 for displaying the webpage 806. The webpage 806 maybe provided by one or more of the servers 114-118, such as the webserver 116 in conjunction with the application server(s) 118. In oneembodiment, the user may provide authentication credentials (e.g., auser identifier, a username, a password, etc.) that identify the uservia the webpage 806. The real-time communication application(s) 118 mayuse the authentication credentials to determine whether the user hasinitiated a second (or different) session with the servers 114-118 usinga second machine. When such a determination is made, this determinationmay trigger the real-time communication application(s) 118 to display aprompt to the user inquiring whether the user desires to link the twomachines. However, the user may also access the servers 114-118anonymously (e.g., not provide any authentication credentials), in whichcase, the linking of the machines used by the user may be initiatedmanually by the user (e.g., by selecting a hyperlink or other object onthe webpage 806).

When the authentication credentials are provided, the real-timecommunication application(s) 132 may maintain a record regarding theuser's visit, such as the time when the user accessed the one or moreservers 114-118, the public IP address of primary machine 802 used bythe user to access the one or more servers 114-118, and a sessionidentifier (or other identifier) that uniquely identifies the user'svisit to the webpage 806 with the primary machine 802. This record maybe stored in one or more data stores, such as the databases 126, thereal-time data store 512, or combinations thereof. Furthermore, therecord maintained by the real-time communication application(s) 132 maybe time sensitive, such that it is deleted or removed after apredetermined time has elapsed where no activity has been detected withthe primary machine 802 (e.g., the primary machine 802 has not requestedor sent any data to one or more of the servers 116-118).

FIG. 9 illustrates a secondary machine 902, in accordance with anexample embodiment, displaying a prompt 904 requesting a linkinginstruction. The secondary machine 902 may be a different machine thanthe primary machine 802 and, notably, may be of a different type ofmachine (e.g., the primary machine 802 may be a smartphone and thesecondary machine 902 may be tablet). As shown in FIG. 9 , the secondarymachine 902 may display a webpage 906 of the electronic marketplace withthe prompt 904 for the linking instruction overlaid thereon. Asdiscussed previously, the prompt 904 may be displayed on the secondarymachine 902 when the real-time communication application(s) 132 hasdetected and/or determined that the user of the primary machine 802 hasalso initiated a session with the one or more servers 114-118 via thesecondary machine 902, such as where the user of the secondary machine902 provides the same authentication credentials as the user of theprimary machine 802. It should be understood that the user using theprimary machine 802 may not necessarily be the same person as the userusing the secondary machine 902, but that the user of the primarymachine 802 and the user of the secondary machine 902 have provided thesame authentication credentials.

Furthermore, the linking of the primary machine 802 and the secondarymachine 902 may be initiated by the user. In this case, the primarymachine 802 may display a linking identifier and the secondary machine902 may also display the linking identifier. In one embodiment, thelinking identifier may be a sequence of one or more alphanumericcharacters. The user may be prompted to confirm that the same linkingidentifier is displayed on the primary machine 802 and the secondarymachine 902. Alternatively, the user may be prompted to confirm thatdifferent linking identifiers are correctly displayed on correspondingmachines, e.g., that a first linking identifier is correctly displayedon the primary machine 802 and a second linking identifier is correctlydisplayed on the secondary machine 902.

The prompt 904 for the linking instruction may also identify the primarymachine 802 that has previously accessed the one or more servers 114-118(e.g., “John Smith's iPhone”). Should the user of the secondary machine902 (or the user of the primary machine 802) answer in the affirmative(e.g., that the primary machine 802 and the secondary machine 902 shouldbe linked), a linking instruction may be communicated to the real-timecommunication application(s) 132 that the primary machine 802 and thesecondary machine 902 are to be linked.

Once linked, complementary content may be displayed on the secondarymachine 902 when a user selects content (or a portion thereof) displayedon the primary machine 802. FIG. 10 illustrates the primary machine 802of FIG. 8 displaying a webpage of primary content in accordance with anexample embodiment. In particular, FIG. 10 illustrates that a webpage1002 of search results that have been returned in response to the searchquery “cowboy hats.” The search results may include auction listings foritems matching the received search query, fixed price listings for itemsmatching the received search query, and other such listings orcombinations thereof. Each of the one or more items (e.g., listings) inthe list may be selectable, such that the user of the primary machine802 may view details about the selected item. When an item is selected,a subset of information about the selected item may be displayed on thelinked secondary machine 902. In this fashion, the user may view detailsabout the selected item on the primary machine 802, and the secondarymachine 902 can keep track of which items the user has previouslyviewed.

Alternatively, or in addition, selecting content on the secondarymachine 902 may affect the content displayed on the primary machine 802.For example, selecting an item displayed by the secondary machine 902may cause details about the item to be displayed on the primary machine802. In this manner, a user may use the secondary machine 902 to controlthe display of content (or a portion thereof) on the primary machine802.

FIGS. 11A-11C illustrate an arrangement, in accordance with an exampleembodiment, where selection of the content displayed on the primarymachine 802 has caused the display of content on the secondary machine902. The primary machine 802 may display a webpage 1102 (or otherelectronic document) that has details about an item selected by a user.When the item is selected, one or more features about the item may thenbe displayed on the secondary machine 902 as a separate webpage 1104 (orother electronic document). As shown in FIGS. 11A-11C, the complementarycontent about the selected item may include such features as the item'sprice, shipping cost, time left for bidding on the item, number of bidsreceived for the item, and the amount and/or type of feedback the sellerof the item has received. As shown in FIGS. 11A-11C, each time a userselects an item from the webpage 1002, the details about the item may bedisplayed on the webpage 1102, and the features about the selected itemmay be displayed on the webpage 1104.

Although FIGS. 11A-11C illustrate a specific set of features beingdisplayed as the complementary content (e.g., price, brand, shippingcost, time left, number of bids, and feedback rating(s)), thecomplementary content displayed on the secondary machine 902 may beconfigurable by a user. For example, the user may specify an alternativeset of features to be displayed as the complementary content.

Alternatively, or in addition, the complementary content displayed onthe secondary machine 902 may be dependent on the items selected by theuser, such that a first type of items (e.g., auctions or fixed pricelistings for automobiles) may have a different set of features displayedon the secondary machine 902 than a second type of items (e.g., auctionsor fixed price listings for clothing). In one embodiment, theitem-dependent attributes may be based on one or more categories used tofilter search results when a search is conducted for auction or fixedprice listings. For example, a category for digital cameras may be“megapixels” (e.g., the number of megapixels captured by the digitalcamera) and the item-dependent attributes may include the megapixelcategory. In a further embodiment, the item-dependent attributes may bebased on those filter categories most used by users to filter searchresults (e.g., the top two filters, the top three filters, etc.). In yetan alternative embodiment, the item-dependent attributes may be selectedbased on which filter categories or item attributes have the greatestvariance. Where a user has selected multiple items that have a greatdegree of variance in a particular attribute (e.g., megapixels, memorysize, weight, etc.), the variance of the attribute may signify that theitem attribute is important to the user. Accordingly, the item attributemay be included in the complementary content displayed by the secondarymachine 902.

In addition, the application server(s) 118 and/or the real-timecommunication application(s) 132 may maintain a record of the itemsselected by the user or a record of the user's session. For example, arecord of the user's session may be stored in the real-time data store512, the user/machine data store 514, or another storage (e.g.,database(s) 126). In this way, should a user decide to stop browsing orselecting items during a first session, the user may resume adding tothe complementary content during a second session upon a subsequentvisit to the electronic marketplace.

Furthermore, the secondary machine 902 may be configured to displaydifferent sets of complementary content. For example, and as explainedabove, different types of items (e.g., automobiles and clothing) mayhave a different set of features displayed on the secondary machine 902.However, the secondary machine 902 may be configured to display multiplesets of complementary content such that when an item from a first typeof items is selected (e.g., a truck), the secondary machine 902 displaysa set of features for the first type of items, and when an item from asecond type of items is selected (e.g., a shirt), the secondary machine902 then displays a set of features for the second type of items. In oneembodiment, the secondary machine 902 may display features for the firsttype of items in a first “tab” and/or window of a web browser and thefeatures for the second type of items may be displayed in a second “tab”and/or window of the web browser. Thus, the disclosed systems andmethods afford the user the flexibility to view different types of itemsduring the same session while displaying complementary content specificto the different types of items.

In addition, the real-time communication application(s) 132 may beconfigured to alter or manipulate the content displayed on the primarymachine 802 to indicate whether an item shown on the primary machine 802is an item appearing in the complementary content shown on the secondarymachine 902. For example, an icon, text, sound, or other audiovisualindicator, may be displayed adjacent to an item displayed on the primarymachine 802 indicating that the item is also part of the complementarydisplayed on the secondary machine 902. In this way, the disclosedsystems and methods provide an efficient manner in which to inform theuser as to whether an item is part of the content displayed on thesecondary machine 902.

Moreover, the complementary content displayed on the secondary machine902 may or may not be static. In other words, a user may choose whetheran item displayed as part of the complementary content remains part ofthe complementary content. Thus, a user may choose to remove an itemdisplayed in the complementary content after having added the item tothe complementary content. Removing the item from the complementarycontent may affect the content displayed on the primary machine 802. Forexample, removing the item from the complementary content may cause theremoval of the audiovisual indicator displayed on the primary machine802 indicating that the item is part of the complementary content.

FIGS. 12A-12B illustrate a method 1202, in accordance with an exampleembodiment, for linking a primary machine (e.g., machine 802) and asecondary machine (e.g., machine 902). The method 1202 may beimplemented by the primary machine 802 and/or the secondary machine 902and, accordingly, is merely described by reference thereto. Initially, afirst client machine (e.g., the primary machine) may request a webpagefrom an electronic marketplace (Operation 1204). The requested webpagemay then be displayed on the first client machine (Operation 1206). Theuser of the first client machine may then provide login credentials(e.g., authentication credentials) identifying himself or herself(Operation 1208). Where login credentials are provided, the real-timecommunication application(s) 132 may associate the provided logincredentials with an identifier that identifies the first client machine,such as a MAC address or session identifier (Operation 1210).

Thereafter, regardless of whether the user has provided logincredentials, the user (e.g., the same user) may then access a webpagefor the electronic marketplace with a second client machine (e.g., thesecondary machine) (Operation 1212). The real-time communicationapplication(s) 132 may then determine whether the user has providedlogin credentials (e.g., authentication credentials) via the secondclient machine (Operation 1214). Where it is determined that the userhas provided login credentials via the second client machine, thereal-time communication application(s) 132 may determine whether thereis a session overlap between the first client machine and the secondclient machine, such as by referencing the user/machine data store 514(Operation 1216). Should there be a session overlap between the firstclient machine and the second client machine, the real-timecommunication application(s) 132 may cause the display of a prompt(Operation 1218) inquiring whether the user desires to link the firstclient machine and the second client machine (Operation 1220). Where theuser answers at Block 1220 in the affirmative, the real-timecommunication application(s) 132 may cause the linking of the first andsecond client machines based on one or more factors, such as networkavailability or quality (Operation 1222). Where the user answers atBlock 1220 in the negative, the method illustrated in logic flow 1202may end.

Alternatively, the user may initiate the linking of the first clientmachine and the second client machine (Operation 1224). Where a linkrequest is received, the real-time communication application(s) 132 maycause the display of one or more linking identifiers on the first clientmachine and/or the second client machine (Operation 1226). Where a linkrequest is not received, the operation of Block 1224 may be repeated.The displayed linking identifier(s) may be the same linking identifieror different linking identifiers (Operation 1228). The user may then beprompted (Operation 1228) to confirm that the correct linkingidentifier(s) are displayed on the first client machine and/or thesecond client machine. Where the user answers in the affirmative, thereal-time communication application(s) 132 may then link the firstclient machine and the second client machine (Operation 1222). In theevent the user cannot confirm that the correct linking identifier(s) aredisplayed, the primary machine and/or secondary machine may display aprompt with a new or alternative linking identifier.

In this manner, the disclosed systems and methods provide a mechanism bywhich a user can efficiently browse an electronic marketplace andmaintain a running record of items that the user may have founddesirable. Furthermore, the disclosed systems and methods leverage anumber of various technologies including database technologies,real-time communications, authentication protocols, and other suchnetworking technologies. Accordingly, the disclosed systems and methodsinvolve a technical approach to address the shortcomings of browsingthrough items and/or services sold through an electronic marketplace,particularly where the machine being used to browse such items and/orservices has a limited display.

Certain embodiments have been described herein as including logic or anumber of components, modules, or mechanisms. Modules may constituteeither software modules (e.g., code embodied on a machine-readablemedium or in a transmission signal) or hardware modules. A hardwaremodule is a tangible unit capable of performing certain operations andmay be configured or arranged in a certain manner. In exampleembodiments, one or more computer systems (e.g., a standalone, client,or server computer system) or one or more hardware modules of a computersystem (e.g., a processor or a group of processors) may be configured bysoftware (e.g., an application or application portion) as a hardwaremodule that operates to perform certain operations as described herein.

In various embodiments, a hardware module may be implementedmechanically or electronically. For example, a hardware module maycomprise dedicated circuitry or logic that is permanently configured(e.g., as a special-purpose processor, such as a field programmable gatearray (FPGA) or an application-specific integrated circuit (ASIC)) toperform certain operations. A hardware module may also compriseprogrammable logic or circuitry (e.g., as encompassed within ageneral-purpose processor or other programmable processor) that istemporarily configured by software to perform certain operations. Itwill be appreciated that the decision to implement a hardware modulemechanically, in dedicated and permanently configured circuitry, or intemporarily configured circuitry (e.g., configured by software) may bedriven by cost and time considerations.

Accordingly, the term “hardware module” should be understood toencompass a tangible entity, be that an entity that is physicallyconstructed, permanently configured (e.g., hardwired) or temporarilyconfigured (e.g., programmed) to operate in a certain manner and/or toperform certain operations described herein. Considering embodiments inwhich hardware modules are temporarily configured (e.g., programmed),each of the hardware modules need not be configured or instantiated atany one instance in time. For example, where the hardware modulescomprise a general-purpose processor configured using software, thegeneral-purpose processor may be configured as respective differenthardware modules at different times. Software may accordingly configurea processor, for example, to constitute a particular hardware module atone instance of time and to constitute a different hardware module at adifferent instance of time.

Hardware modules can provide information to, and receive informationfrom, other hardware modules. Accordingly, the described hardwaremodules may be regarded as being communicatively coupled. Where multipleof such hardware modules exist contemporaneously, communications may beachieved through signal transmission (e.g., over appropriate circuitsand buses) that connect the hardware modules. In embodiments in whichmultiple hardware modules are configured or instantiated at differenttimes, communications between such hardware modules may be achieved, forexample, through the storage and retrieval of information in memorystructures to which the multiple hardware modules have access. Forexample, one hardware module may perform an operation and store theoutput of that operation in a memory device to which it iscommunicatively coupled.

A further hardware module may then, at a later time, access the memorydevice to retrieve and process the stored output. Hardware modules mayalso initiate communications with input or output devices and canoperate on a resource (e.g., a collection of information).

The various operations of example methods described herein may beperformed, at least partially, by one or more processors that aretemporarily configured (e.g., by software) or permanently configured toperform the relevant operations. Whether temporarily or permanentlyconfigured, such processors may constitute processor-implemented modulesthat operate to perform one or more operations or functions. The modulesreferred to herein may, in some example embodiments, compriseprocessor-implemented modules.

Similarly, the methods described herein may be at least partiallyprocessor-implemented. For example, at least some of the operations of amethod may be performed by one or more processors orprocessor-implemented modules. The performance of certain of theoperations may be distributed among the one or more processors, not onlyresiding within a single machine, but deployed across a number ofmachines. In some example embodiments, the processor or processors maybe located in a single location (e.g., within a home environment, anoffice environment or as a server farm), while in other embodiments theprocessors may be distributed across a number of locations.

The one or more processors may also operate to support performance ofthe relevant operations in a “cloud computing” environment or as a“software as a service” (SaaS). For example, at least some of theoperations may be performed by a group of computers (as examples ofmachines including processors), these operations being accessible via anetwork and via one or more appropriate interfaces (e.g., APIs).

Example embodiments may be implemented in digital electronic circuitry,or in computer hardware, firmware, software, or in combinations of them.Example embodiments may be implemented using a computer program product,e.g., a computer program tangibly embodied in an information carrier,e.g., in a machine-readable medium for execution by, or to control theoperation of, data processing apparatus, e.g., a programmable processor,a computer, or multiple computers.

A computer program can be written in any form of programming language,including compiled or interpreted languages, and it can be deployed inany form, including as a stand-alone program or as a module, subroutine,or other unit suitable for use in a computing environment. A computerprogram can be deployed to be executed on one computer or on multiplecomputers at one site or distributed across multiple sites andinterconnected by a communication network.

In example embodiments, operations may be performed by one or moreprogrammable processors executing a computer program to performfunctions by operating on input data and generating output. Methodoperations can also be performed by, and apparatus of exampleembodiments may be implemented as, special purpose logic circuitry(e.g., a FPGA or an ASIC).

A computing system can include clients and servers. A client and serverare generally remote from each other and typically interact through acommunication network. The relationship of client and server arises byvirtue of computer programs running on the respective computers andhaving a client-server relationship to each other. In embodimentsdeploying a programmable computing system, it will be appreciated thatboth hardware and software architectures merit consideration.Specifically, it will be appreciated that the choice of whether toimplement certain functionality in permanently configured hardware(e.g., an ASIC), in temporarily configured hardware (e.g., a combinationof software and a programmable processor), or a combination ofpermanently and temporarily configured hardware may be a design choice.Below are set out hardware (e.g., machine) and software architecturesthat may be deployed, in various example embodiments. It is contemplatedthat any features of any embodiments disclosed herein can be combinedwith any other features of any other embodiments disclosed herein.Accordingly, these any such hybrid embodiments are within the scope ofthe present disclosure.

Although an embodiment has been described with reference to specificexample embodiments, it will be evident that various modifications andchanges may be made to these embodiments without departing from thebroader spirit and scope of the present disclosure. Accordingly, thespecification and drawings are to be regarded in an illustrative ratherthan a restrictive sense. The accompanying drawings that form a parthereof show, by way of illustration, and not of limitation, specificembodiments in which the subject matter may be practiced. Theembodiments illustrated are described in sufficient detail to enablethose skilled in the art to practice the teachings disclosed herein.Other embodiments may be utilized and derived therefrom, such thatstructural and logical substitutions and changes may be made withoutdeparting from the scope of this disclosure. This Detailed Description,therefore, is not to be taken in a limiting sense, and the scope ofvarious embodiments is defined only by the appended claims, along withthe full range of equivalents to which such claims are entitled.

Such embodiments of the inventive subject matter may be referred toherein, individually and/or collectively, by the term “invention” merelyfor convenience and without intending to voluntarily limit the scope ofthis application to any single invention or inventive concept if morethan one is in fact disclosed. Thus, although specific embodiments havebeen illustrated and described herein, it should be appreciated that anyarrangement calculated to achieve the same purpose may be substitutedfor the specific embodiments shown. This disclosure is intended to coverany and all adaptations or variations of various embodiments.Combinations of the above embodiments, and other embodiments notspecifically described herein, will be apparent to those of skill in theart upon reviewing the above description.

The Abstract of the Disclosure is provided to comply with 37 C.F.R. §1.72(b), requiring an abstract that will allow the reader to quicklyascertain the nature of the technical disclosure. It is submitted withthe understanding that it will not be used to interpret or limit thescope or meaning of the claims. In addition, in the foregoing DetailedDescription, it can be seen that various features are grouped togetherin a single embodiment for the purpose of streamlining the disclosure.This method of disclosure is not to be interpreted as reflecting anintention that the claimed embodiments require more features than areexpressly recited in each claim. Rather, as the following claimsreflect, inventive subject matter lies in less than all features of asingle disclosed embodiment. Thus, the following claims are herebyincorporated into the Detailed Description, with each claim standing onits own as a separate embodiment.

What is claimed is:
 1. A computer-implemented method comprising:generating for display, at a first machine, a first webpage comprising aset of search results having items; receiving, from the first machine, aselection of a first item selected from the set of search results at thefirst webpage; receiving, from the first machine, a selection of asecond item selected from the set of search results at the firstwebpage; and generating for display, at a second machine linked to thefirst machine, a second webpage separate from the first webpage, thesecond webpage comprising a comparison table, the comparison tablecomprising a comparison of one or more item attributes for the firstitem and the second item.
 2. The computer-implemented method of claim 1,further comprising linking the first machine and the second machine,wherein the linking is performed based on a first linking identifierdisplayed at the first machine matching a second linking identifierdisplayed at the second machine.
 3. The computer-implemented method ofclaim 1, wherein the second webpage is generated in response to theselection of the first item.
 4. The computer-implemented method of claim1, further comprising generating for display, in response to theselection of the first item, an item indicator at the first machine, theitem indicator identifying whether the one or more item attributes forthe first item are being displayed for comparison at the second webpage.5. The computer-implemented method of claim 1, further comprisingcommunicating, from the first machine to the second machine, informationcorresponding to the comparison of the one or more item attributes forthe first item and the second item without a request for the informationfrom the second machine.
 6. The computer-implemented method of claim 1,wherein the second webpage is displayed based on the second machinereceiving, from the first machine, a URL (Uniform Resource Locator)corresponding to the second webpage.
 7. The computer-implemented methodof claim 1, wherein: the selection of the first item populates thecomparison table with a first set of values for the one or more itemattributes, each of the first set of values being associated with thefirst item; and the selection of the second item populates thecomparison table with a second set of values for the one or more itemattributes, each of the second set of values being associated withsecond item.
 8. A system comprising: at least one processor; and one ormore machine-readable media having computer-executable instructionsembodied thereon that, when executed by the at least one processor,cause the at least one processor to perform operations comprising:displaying, at a first machine, a first webpage comprising a set ofsearch results having items; receiving, from the first machine, aselection of a first item and a selection of a second item, the firstitem and the second item being selected from the set of search resultsat the first webpage; displaying, at a second machine linked to thefirst machine, a second webpage separate from the first webpage, thesecond webpage comprising a comparison table, the comparison tablecomprising a comparison of one more item attributes for the first itemand the second item.
 9. The system of claim 8, wherein the operationsfurther comprise linking the first machine and the second machine,wherein the linking is performed based on a first linking identifierdisplayed at the first machine matching a second linking identifierdisplayed at the second machine.
 10. The system of claim 8, wherein thesecond webpage is displayed in response to the selection of the firstitem.
 11. The system of claim 8, wherein the operations further comprisedisplaying, in response to the selection of the first item, an itemindicator at the first machine, the item indicator identifying whetherthe one or more item attributes for the first item are being displayedfor comparison at the second webpage.
 12. The system of claim of claim8, where the operations further comprise communicating, from the firstmachine to the second machine, information corresponding to thecomparison of one or more item attributes for the first item and thesecond item without a request for the information from the secondmachine.
 13. The system of claim 8, wherein the second webpage isdisplayed based on the second machine receiving, from the first machine,a URL (Uniform Resource Locator) corresponding to the second webpage.14. The system of claim 8, wherein: the selection of the first itempopulates the comparison table with a first set of values for the one ormore item attributes, each of the first set of values being associatedwith the first item; and the selection of the second item populates thecomparison table with a second set of values for the one or more itemattributes, each of the second set of values being associated withsecond item.
 15. One or more machine-readable media havingcomputer-executable instructions embodied thereon that, when executed byat least one processor, cause the at least one processor to performoperations comprising: generating, for display at a first machine, afirst webpage comprising a set of search results having items;receiving, from the first machine, a selection of a first item and aselection of a second item, the first item and the second item beingselected from the set of search results at the first webpage;generating, for display at a second machine linked to the first machine,a second webpage separate from the first webpage, the second webpagecomprising a comparison table, the comparison table comprising acomparison of one or more item attributes for the first item and thesecond item.
 16. The media of claim 15, wherein the operations furthercomprise linking the first machine and the second machine, wherein thelinking is performed based on a first linking identifier displayed atthe first machine matching a second linking identifier displayed at thesecond machine.
 17. The media of claim 15, wherein the second webpage isgenerated in response to the selection of the first item.
 18. The mediaof claim 15, wherein the operations further comprise generating fordisplay, in response to the selection of the first item, an itemindicator at the first machine, the item indicator identifying whetherthe one or more item attributes for the first item are being displayedfor comparison at the second webpage.
 19. The media of claim 15, whereinthe operations further comprise communicating, from the first machine tothe second machine, information corresponding to the comparison of oneor more item attributes for the first item and the second item without arequest for the information from the second machine.
 20. The media ofclaim 15, wherein the second webpage is displayed based on the secondmachine receiving, from the first machine, a URL (Uniform ResourceLocator) corresponding to the second webpage.